﻿Public Class perCidade
    Inherits perPadrao

#Region "Declaração de variáveis"
    Private objBuscaId As New perProximoId
#End Region

#Region "Propriedades"

    Public ReadOnly Property sqlConsulta(ByVal iIDEstado As Int32) As String
        Get
            Dim sSql As String
            sSql = "Select IDCidade, Cidade From DC_Cidades"
            If (iIDEstado > 0) Then
                sSql &= " WHERE idEstado = " & iIDEstado
            End If

            sSql &= " ORDER BY Cidade"
            Return sSql
        End Get
    End Property

#End Region

#Region "Métodos"

    Public Function inserirCidade(ByVal sCidade As String, _
                                  ByVal iIdEstado As Int32) As Int32

        Dim iIdCidade As Int32
        Dim sSql As String

        Try
            iIdCidade = Me.objBuscaId.BuscaID("IDCidade", "DC_Cidades")

            sSql = "  INSERT INTO DC_Cidades "
            sSql &= " ( "
            sSql &= "   IDCidade, "
            sSql &= "   IDEstado, "
            sSql &= "   Cidade "
            sSql &= " ) "
            sSql &= " VALUES "
            sSql &= " ( "
            sSql &= iIdCidade & ", "
            sSql &= iIdEstado & ", "
            sSql &= "'" & sCidade & "' "
            sSql &= " ) "

            MyBase.executarAcao(sSql)

            Return iIdCidade

        Catch ex As Exception

            Throw New Exception("Exceção no método 'inserirCidade'. " & Environment.NewLine & Environment.NewLine & ex.Message)

        End Try

    End Function

    Public Sub alterarCidade(ByVal iIdCidade As Int32, _
                             ByVal iIdEstado As Int32, _
                             ByVal sCidade As String)

        Dim sSql As String

        Try

            sSql = "  UPDATE DC_Cidades SET "
            sSql &= "   IDEstado = " & iIdEstado & ", "
            sSql &= "   Cidade = '" & sCidade & "' "
            sSql &= " WHERE "
            sSql &= "   IDCidade = " & iIdCidade

            MyBase.executarAcao(sSql)

        Catch ex As Exception

            Throw New Exception("Exceção no método 'alterarCidade'. " & Environment.NewLine & Environment.NewLine & ex.Message)

        End Try

    End Sub

    Public Sub excluirCidade(ByVal iIdCidade As Int32)

        Dim sSql As String

        Try
            sSql = "  DELETE FROM "
            sSql &= "   DC_Cidades "
            sSql &= " WHERE "
            sSql &= "   IDCidade = " & iIdCidade

            MyBase.executarAcao(sSql)

        Catch ex As Exception

            Throw New Exception("Exceção no método 'excluirCidade'. " & Environment.NewLine & Environment.NewLine & ex.Message)

        End Try

    End Sub

    Public Function selecionarCidade(ByVal iIdCidade As Int32) As DataRow
        Dim sSql As String
        Dim dsDados As New DataSet

        Try
            sSql = " SELECT "
            sSql &= "   DC_Cidades.IdCidade, "
            sSql &= "   DC_Cidades.Cidade, "
            sSql &= "   DC_Estados.Estado, "
            sSql &= "   DC_Estados.IdEstado "
            sSql &= " FROM DC_Cidades "
            sSql &= " INNER JOIN DC_Estados ON DC_Cidades.IdEstado = DC_Estados.IdEstado "
            sSql &= " WHERE DC_Cidades.IDCidade = " & iIdCidade

            dsDados = MyBase.executarConsulta(sSql, "DC_Cidades")

            If Not dsDados Is Nothing AndAlso dsDados.Tables("DC_Cidades").Rows.Count > 0 Then
                Return dsDados.Tables("DC_Cidades").Rows(0)
            Else
                Return Nothing
            End If

        Catch ex As Exception
            Throw New Exception("Exceção no método 'selecionarCidade'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Function

    Public Function selecionarCampoCidade(ByVal sCampo As String, ByVal iIdCidade As Long) As DataTable
        Dim sSql As String
        Dim dsDados As New DataSet

        Try
            sSql = " SELECT " & sCampo
            sSql &= " FROM DC_Cidades "

            If (iIdCidade > 0) Then
                sSql &= " WHERE IDCidade = " & iIdCidade
            End If

            dsDados = MyBase.executarConsulta(sSql, "DC_Cidades")

            If Not dsDados Is Nothing AndAlso dsDados.Tables("DC_Cidades").Rows.Count > 0 Then
                Return dsDados.Tables("DC_Cidades")
            Else
                Return Nothing
            End If

        Catch ex As Exception
            Throw New Exception("Exceção no método 'selecionarCampoCidade'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Function

    Public Function verificarCidadeEstado(ByVal iIdEstado As Int32) As DataTable
        Dim sSql As String
        Dim dsDados As New DataSet

        Try
            sSql = " SELECT IDEstado"
            sSql &= " FROM DC_Cidades "

            If (iIdEstado > 0) Then
                sSql &= " WHERE IDEstado = " & iIdEstado
            End If

            dsDados = MyBase.executarConsulta(sSql, "DC_Cidades")

            If Not dsDados Is Nothing AndAlso dsDados.Tables("DC_Cidades").Rows.Count > 0 Then
                Return dsDados.Tables("DC_Cidades")
            Else
                Return Nothing
            End If

        Catch ex As Exception
            Throw New Exception("Exceção no método 'selecionarCampoCidade'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Function
#End Region
End Class
